.Dd March 11, 2005
.Dt NEWLOCALE 3
.Os
.Sh NAME
.Nm newlocale
.Nd Create a new locale
.Sh SYNOPSIS
.In xlocale.h
.Ft locale_t
.Fn newlocale "int mask" "const char * locale" "locale_t base"
.Sh DESCRIPTION
Creates a new
.Vt locale_t
based off the locale specified by
.Va base .
The categories specified by
.Va mask
will be replaced to correspond with the named
.Va locale .
.Pp
The
.Va mask
is the logical OR of the following:
.Bl -tag -width LC_MONETARY_MASK
.It Dv LC_COLLATE_MASK
Collation
.It Dv LC_CTYPE_MASK
Character type
.It Dv LC_MESSAGES_MASK
Messages
.It Dv LC_MONETARY_MASK
Monetary
.It Dv LC_NUMERIC_MASK
Numeric
.It Dv LC_TIME_MASK
Time
.It Dv LC_ALL_MASK
The logical OR of all of the above
.El
.Pp
The
.Va locale
string is typically the name of one of the directories in
.Pa /usr/share/locale .
If
.Va locale
is
.Dv NULL ,
then the C locale is used. If
.Va locale
is an empty string, then it will look for environment variables:
LC_ALL, then LC_* if the corresponding LC_*_MASK bit is set, then
the LANG environment variable. If none of these are found, it
will default to the C locale.
.Pp
If
.Va base
is
.Dv NULL ,
the current locale is used. If
.Va base
is
.Dv LC_GLOBAL_LOCALE ,
the global locale is used.
.Pp
If
.Va mask
is
.Dv LC_ALL_MASK ,
.Va base
is ignored. In order to create a C
.Vt locale_t
value, use
.Fn newlocale "LC_ALL_MASK" "NULL" "NULL" .
.Sh RETURN VALUES
Returns a new
.Vt locale_t ,
or
.Dv NULL
in case of error.
New locales should be freed with
.Xr freelocale 3 .
.Sh SEE ALSO
.Xr duplocale 3 ,
.Xr freelocale 3 ,
.Xr querylocale 3 ,
.Xr uselocale 3 ,
.Xr xlocale 3
